/*
 * Dio.h
 *
 *  Created on: 10.9.2013
 *      Author: David
 */

#ifndef DIO_H_
#define DIO_H_

#include "Dio_Cfg.h"

#define __IO_INPUT(port,pin)    DDR ## port &= ~(1<<pin)
#define __IO_OUTPUT(port,pin)   DDR ## port |= (1<<pin)
#define __IO_CLR(port,pin)      PORT ## port &= ~(1<<pin)
#define __IO_SET(port,pin)      PORT ## port |= (1<<pin)
#define __IO_TOGGLE(port,pin)   PORT ## port ^= (1<<pin)
#define __IO_READ(port,pin)     (((PIN ## port) & (1<<pin)) == (1<<pin))

#define IO_INPUT(...) __IO_INPUT(__VA_ARGS__)
#define IO_OUTPUT(...) __IO_OUTPUT(__VA_ARGS__)
#define IO_CLR(...) __IO_CLR(__VA_ARGS__)
#define IO_SET(...) __IO_SET(__VA_ARGS__)
#define IO_TOGGLE(...) __IO_TOGGLE(__VA_ARGS__)
#define IO_READ(...) __IO_READ(__VA_ARGS__)

#endif /* DIO_H_ */
